package models

import (
	"time"
)

type Product struct {
	Id int64 `xorm:"oid"`

	Producttypeid                                          int       `json:"ProductTypeId" xorm:"not null INTEGER"`
	Parentgroupedproductid                                 int       `json:"ParentGroupedProductId" xorm:"not null INTEGER"`
	Visibleindividually                                    int       `json:"VisibleIndividually" xorm:"not null BIT(1)"`
	Name                                                   string    `json:"Name" xorm:"not null VARCHAR(400)"`
	Shortdescription                                       string    `json:"ShortDescription" xorm:"VARCHAR"`
	Fulldescription                                        string    `json:"FullDescription" xorm:"VARCHAR"`
	Admincomment                                           string    `json:"AdminComment" xorm:"VARCHAR"`
	Producttemplateid                                      int       `json:"ProductTemplateId" xorm:"not null INTEGER"`
	Vendorid                                               int       `json:"VendorId" xorm:"not null INTEGER"`
	Showonhomepage                                         int       `json:"ShowOnHomePage" xorm:"not null BIT(1)"`
	Metakeywords                                           string    `json:"MetaKeywords" xorm:"VARCHAR(400)"`
	Metadescription                                        string    `json:"MetaDescription" xorm:"VARCHAR"`
	Metatitle                                              string    `json:"MetaTitle" xorm:"VARCHAR(400)"`
	Allowcustomerreviews                                   int       `json:"AllowCustomerReviews" xorm:"not null BIT(1)"`
	Approvedratingsum                                      int       `json:"ApprovedRatingSum" xorm:"not null INTEGER"`
	Notapprovedratingsum                                   int       `json:"NotApprovedRatingSum" xorm:"not null INTEGER"`
	Approvedtotalreviews                                   int       `json:"ApprovedTotalReviews" xorm:"not null INTEGER"`
	Notapprovedtotalreviews                                int       `json:"NotApprovedTotalReviews" xorm:"not null INTEGER"`
	Subjecttoacl                                           int       `json:"SubjectToAcl" xorm:"not null BIT(1)"`
	Limitedtostores                                        int       `json:"LimitedToStores" xorm:"not null BIT(1)"`
	Sku                                                    string    `json:"Sku" xorm:"VARCHAR(400)"`
	Manufacturerpartnumber                                 string    `json:"ManufacturerPartNumber" xorm:"VARCHAR(400)"`
	Gtin                                                   string    `json:"Gtin" xorm:"VARCHAR(400)"`
	Isgiftcard                                             int       `json:"IsGiftCard" xorm:"not null BIT(1)"`
	Giftcardtypeid                                         int       `json:"GiftCardTypeId" xorm:"not null INTEGER"`
	Overriddengiftcardamount                               string    `json:"OverriddenGiftCardAmount" xorm:"NUMERIC"`
	Requireotherproducts                                   int       `json:"RequireOtherProducts" xorm:"not null BIT(1)"`
	Requiredproductids                                     string    `json:"RequiredProductIds" xorm:"VARCHAR(1000)"`
	Automaticallyaddrequiredproducts                       int       `json:"AutomaticallyAddRequiredProducts" xorm:"not null BIT(1)"`
	Isdownload                                             int       `json:"IsDownload" xorm:"not null BIT(1)"`
	Downloadid                                             int       `json:"DownloadId" xorm:"not null INTEGER"`
	Unlimiteddownloads                                     int       `json:"UnlimitedDownloads" xorm:"not null BIT(1)"`
	Maxnumberofdownloads                                   int       `json:"MaxNumberOfDownloads" xorm:"not null INTEGER"`
	Downloadexpirationdays                                 int       `json:"DownloadExpirationDays" xorm:"INTEGER"`
	Downloadactivationtypeid                               int       `json:"DownloadActivationTypeId" xorm:"not null INTEGER"`
	Hassampledownload                                      int       `json:"HasSampleDownload" xorm:"not null BIT(1)"`
	Sampledownloadid                                       int       `json:"SampleDownloadId" xorm:"not null INTEGER"`
	Hasuseragreement                                       int       `json:"HasUserAgreement" xorm:"not null BIT(1)"`
	Useragreementtext                                      string    `json:"UserAgreementText" xorm:"VARCHAR"`
	Isrecurring                                            int       `json:"IsRecurring" xorm:"not null BIT(1)"`
	Recurringcyclelength                                   int       `json:"RecurringCycleLength" xorm:"not null INTEGER"`
	Recurringcycleperiodid                                 int       `json:"RecurringCyclePeriodId" xorm:"not null INTEGER"`
	Recurringtotalcycles                                   int       `json:"RecurringTotalCycles" xorm:"not null INTEGER"`
	Isrental                                               int       `json:"IsRental" xorm:"not null BIT(1)"`
	Rentalpricelength                                      int       `json:"RentalPriceLength" xorm:"not null INTEGER"`
	Rentalpriceperiodid                                    int       `json:"RentalPricePeriodId" xorm:"not null INTEGER"`
	Isshipenabled                                          int       `json:"IsShipEnabled" xorm:"not null BIT(1)"`
	Isfreeshipping                                         int       `json:"IsFreeShipping" xorm:"not null BIT(1)"`
	Shipseparately                                         int       `json:"ShipSeparately" xorm:"not null BIT(1)"`
	Additionalshippingcharge                               string    `json:"AdditionalShippingCharge" xorm:"not null NUMERIC"`
	Deliverydateid                                         int       `json:"DeliveryDateId" xorm:"not null INTEGER"`
	Istaxexempt                                            int       `json:"IsTaxExempt" xorm:"not null BIT(1)"`
	Taxcategoryid                                          int       `json:"TaxCategoryId" xorm:"not null INTEGER"`
	Istelecommunicationsorbroadcastingorelectronicservices int       `json:"IsTelecommunicationsOrBroadcastingOrElectronicServices" xorm:"not null BIT(1)"`
	Manageinventorymethodid                                int       `json:"ManageInventoryMethodId" xorm:"not null INTEGER"`
	Usemultiplewarehouses                                  int       `json:"UseMultipleWarehouses" xorm:"not null BIT(1)"`
	Warehouseid                                            int       `json:"WarehouseId" xorm:"not null INTEGER"`
	Stockquantity                                          int       `json:"StockQuantity" xorm:"not null INTEGER"`
	Displaystockavailability                               int       `json:"DisplayStockAvailability" xorm:"not null BIT(1)"`
	Displaystockquantity                                   int       `json:"DisplayStockQuantity" xorm:"not null BIT(1)"`
	Minstockquantity                                       int       `json:"MinStockQuantity" xorm:"not null INTEGER"`
	Lowstockactivityid                                     int       `json:"LowStockActivityId" xorm:"not null INTEGER"`
	Notifyadminforquantitybelow                            int       `json:"NotifyAdminForQuantityBelow" xorm:"not null INTEGER"`
	Backordermodeid                                        int       `json:"BackorderModeId" xorm:"not null INTEGER"`
	Allowbackinstocksubscriptions                          int       `json:"AllowBackInStockSubscriptions" xorm:"not null BIT(1)"`
	Orderminimumquantity                                   int       `json:"OrderMinimumQuantity" xorm:"not null INTEGER"`
	Ordermaximumquantity                                   int       `json:"OrderMaximumQuantity" xorm:"not null INTEGER"`
	Allowedquantities                                      string    `json:"AllowedQuantities" xorm:"VARCHAR(1000)"`
	Allowaddingonlyexistingattributecombinations           int       `json:"AllowAddingOnlyExistingAttributeCombinations" xorm:"not null BIT(1)"`
	Disablebuybutton                                       int       `json:"DisableBuyButton" xorm:"not null BIT(1)"`
	Disablewishlistbutton                                  int       `json:"DisableWishlistButton" xorm:"not null BIT(1)"`
	Availableforpreorder                                   int       `json:"AvailableForPreOrder" xorm:"not null BIT(1)"`
	Preorderavailabilitystartdatetimeutc                   time.Time `json:"PreOrderAvailabilityStartDateTimeUtc" xorm:"DATETIME"`
	Callforprice                                           int       `json:"CallForPrice" xorm:"not null BIT(1)"`
	Price                                                  string    `json:"Price" xorm:"not null NUMERIC"`
	Oldprice                                               string    `json:"OldPrice" xorm:"not null NUMERIC"`
	Productcost                                            string    `json:"ProductCost" xorm:"not null NUMERIC"`
	Specialprice                                           string    `json:"SpecialPrice" xorm:"NUMERIC"`
	Specialpricestartdatetimeutc                           time.Time `json:"SpecialPriceStartDateTimeUtc" xorm:"DATETIME"`
	Specialpriceenddatetimeutc                             time.Time `json:"SpecialPriceEndDateTimeUtc" xorm:"DATETIME"`
	Customerentersprice                                    int       `json:"CustomerEntersPrice" xorm:"not null BIT(1)"`
	Minimumcustomerenteredprice                            string    `json:"MinimumCustomerEnteredPrice" xorm:"not null NUMERIC"`
	Maximumcustomerenteredprice                            string    `json:"MaximumCustomerEnteredPrice" xorm:"not null NUMERIC"`
	Basepriceenabled                                       int       `json:"BasepriceEnabled" xorm:"not null BIT(1)"`
	Basepriceamount                                        string    `json:"BasepriceAmount" xorm:"not null NUMERIC"`
	Basepriceunitid                                        int       `json:"BasepriceUnitId" xorm:"not null INTEGER"`
	Basepricebaseamount                                    string    `json:"BasepriceBaseAmount" xorm:"not null NUMERIC"`
	Basepricebaseunitid                                    int       `json:"BasepriceBaseUnitId" xorm:"not null INTEGER"`
	Markasnew                                              int       `json:"MarkAsNew" xorm:"not null BIT(1)"`
	Markasnewstartdatetimeutc                              time.Time `json:"MarkAsNewStartDateTimeUtc" xorm:"DATETIME"`
	Markasnewenddatetimeutc                                time.Time `json:"MarkAsNewEndDateTimeUtc" xorm:"DATETIME"`
	Hastierprices                                          int       `json:"HasTierPrices" xorm:"not null BIT(1)"`
	Hasdiscountsapplied                                    int       `json:"HasDiscountsApplied" xorm:"not null BIT(1)"`
	Weight                                                 string    `json:"Weight" xorm:"not null NUMERIC"`
	Length                                                 string    `json:"Length" xorm:"not null NUMERIC"`
	Width                                                  string    `json:"Width" xorm:"not null NUMERIC"`
	Height                                                 string    `json:"Height" xorm:"not null NUMERIC"`
	Availablestartdatetimeutc                              time.Time `json:"AvailableStartDateTimeUtc" xorm:"DATETIME"`
	Availableenddatetimeutc                                time.Time `json:"AvailableEndDateTimeUtc" xorm:"DATETIME"`
	Displayorder                                           int       `json:"DisplayOrder" xorm:"not null INTEGER"`
	Published                                              int       `json:"Published" xorm:"not null BIT(1)"`
	Deleted                                                int       `json:"Deleted" xorm:"not null BIT(1)"`
	Createdonutc                                           time.Time `json:"CreatedOnUtc" xorm:"not null DATETIME"`
	Updatedonutc                                           time.Time `json:"UpdatedOnUtc" xorm:"not null DATETIME"`
}
